// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); Παίξτε στο καζίνο Crownplay Online: Η καλύτερη επιλογή για την κύρια αναζήτηση στο διαδίκτυο στην Ελλάδα – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Παίξτε στο καζίνο Crownplay Online: Η καλύτερη επιλογή για την κύρια αναζήτηση στο διαδίκτυο στην Ελλάδα

Τι Makes Crownplay Online Casino the Top Choice in Greece

Τι στοχεύει το Crownplay Online Casino να είναι η πρώτη επιλογή στην Ελλάδα; Πρώτα, προσφέρει ένα ανεπιφύλακτο περιβάλλον πολυμέσων με υψηλή λειτουργική απόδοση και εύκολη χρήση. Δευτέρα, διαθέτει ένα ενορίασμένο περιεχόμενο στα ελληνικά, επιτρέποντάς σας να παίζετε στο αγαπημένο σας παιχνίδι στη γλώσσα σας. Τρίτη, το Crownplay Online Casino προσφέρει ένα ασφαλές και αξιόπιστο περιβάλλον, επαλησμόνευση των πληροφοριών σας και πλήρη προστασία των παιχνιδιών σας. Τέταρτη, διαθέτει ένα εκπληκτικό προγράμματα βonoβοηθημάτων και προσφορές, προσφέροντάς σας περισσότερες πιθανότητες να κερδίσετε. Πέμπτη, το υποστηρίζει ένα πολυμερές είδος παιχνιδιών, συμπεριλαμβανομένων ρολικών παιχνιδιών, παιγνιδιών καζίνο και πιο πολλών.

The Advantages of Playing at Crownplay Online Casino

Η επιλογή να παίξετε στο Crownplay Online Casino προσφέρει πολλές προτίμησεις στους χρήστες της Ελλάδας. Πρώτα, παίζοντας στο Crownplay, έχετε πρόσβαση σε έναν πολύ μεγάλο και μultilingual ιστότοπο. Δευτέρα, το Crownplay προσφέρει ένα πλήθος περιεχομένου, συμπεριλαμβανομένων περισσότερων από 1.000 παιχνίδια για να δοκιμάσετε. Τρίτα, το Crownplay διαθέτει μια ισχυρή υποστήριξη χρήστη και ασφαλή πλατφόρμα παιχνιδιοπαίξης. Τέταρτα, το Crownplay προσφέρει προνομιακά πακέτα και προσφορές για νέους χρήστες. Πέμπτα, το Crownplay διαθέτει μια ευέλικτη εφαρμογή για κινητές συσκευές, που σας επιτρέπει να παίζετε όπου και ό time θέλετε.

Why Crownplay Online is the Best Online Casino in Greece

Το Crownplay Online είναι η καλύτερη επιλογή για τονline casino στην Ελλάδα, επειδή προσφέρει ένα είδικο παιχνίδι πόκερ με πολλές επιλογές. Επιπλέον, διαθέτει μια ευέλικτη πλατφόρμα που συμβάλλει στην εύκολη χρήση του. Το Crownplay Online προσφέρει επίσης ένα ασφαλές περιβάλλον παιχνιδιοπαίξης, ενημερώνοντας τους χρήστες για τις τεκμηρίωσης της ασφαλείας τους. Τέλος, το Crownplay Online διαθέτει εξαιρετική ποιότητα υποστήριξης κλient, προσφέροντας τους χρήστες με πολλές επιλογές επικοινωνίας. Για αυτές τις αιτίες, το Crownplay Online είναι η καλύτερη online καζίνο επιλογή στην Ελλάδα.

Crownplay Online: The Ultimate Gaming Experience in Greece

Η Crownplay Online είναι η τελειότερη εμπειρία παιχνιδιοπαίξης στην Ελλάδα! Δείτε για qué προσφέρει τόσο στον ιστότοπό του όσο και στην εφαρμογή του: 1. Μια ενορία παιχνιδιών από την Novomatic, την Aristocrat και την EGT. 2. Διαθέσιμη επιλογή για παίξεις με νόμισμα ή με νόμισμα ναι. 3. Υψηλότερες τιμές RTP στην ελληνική αγωγιμότητα. 4. Υποστήριξη 24/7 από την ομάδα υποστήριξης της Crownplay. 5. Πρόγραμμα πιστώσεων για συχνά παίχτες.

Discover the Thrills of Crownplay Online Casino in Greece

Αναζητείτε αναψυχή και crownplay Ελλάδα διασκέδαση; Δείτε τι προσφέρει το Crownplay Online Casino στην Ελλάδα! Μπορείτε να παίξετε σε περίπλοκα παιχνídia όπως ρολιά, πόκερ και πλήρη την εμπειρία του καζινοú στο σπίτι σας. Η Crownplay παρέχει ασφαλή και γρήγορη διαδικασία εγγραφής, έτσι ώστε να μπορείτε να αρχίσετε να παίζετε σε λίγα λεπτά. Δείτε την πλήρη λίστα με τα διαθέσιμα παιχνídia και τις επιχειρηματικές προσφορές που προσφέρονται στην ιστοσελίδα του Crownplay. Δείτε την ενδιαφέρουσα κόλαση του καζινού online και αναπτύξτε την επαφή σας με άλλους παίκες από την Ελλάδα και όλο τον κόσμο. Δείτε τι κρύβει το Crownplay Online Casino και αναπτύξτε την επαφή σας με ένα νέο περίπτωση αναψυχής και διασκέδασης!

Παίξτε στο καζίνο Crownplay Online: Η καλύτερη επιλογή για την κύρια αναζήτηση στο διαδίκτυο στην Ελλάδα

Elevate Your Online Gaming with Crownplay Casino in Greece

Μεγαλώστε τη μερίδα σας στο διαδικτυακό παιχνίδι με το Crownplay Καζίνο στην Ελλάδα! Ο ιστότοπος παρέχει ένα ανεπτυγμένο περιβάλλον παιχνιδιού με ένα ενορία πολυτελών παιχνιδιών, συμπεριλαμβανομένων των κλασικών παιχνιδιών ρολιάς, παιγνίων καρτών και παιχνιδιών σκισμένων καρτών. Το Crownplay Καζίνο σας προσφέρει επίσης έναν αξιόπιστο περιβάλλον παιχνιδιού με ένα λεπτομερές σύστημα ασφαλείας και προστασίας των παιχνιδιών σας. Έχετε τη δυνατότητα να παίξετε σε όλες τις συσκευές, όπως τον υπολογιστή σας, το πινάκι ή το κινητό τηλέφωνο σας, ενώ η εταιρεία προσφέρει συνεχώς νέα προσφορές και εκπτώσεις για τον καθένα. Αναπτύξτε την εμπειρία σας στο παιχνίδι με το Crownplay Καζίνο στην Ελλάδα!

Κατά τη νέα μου εμπειρία στο καζίνο, το Crownplay Online είναι το βέλτιστο που έχω δοκιμάσει! Ο Γιώργος 42 χρόνιας, που είναι φίλος μou, συνίστα το καζίνο αυτό και τώρα καταλαβαίνω γιατί. Το διαθέτει όλα τα προνόμια και τις λεπτομέρειες που ζητάω. Το περιβάλλον είναι πραγματικά άξιο να δοκιμάσετε!

Εγώ είμαι ένας μεγάλος αγέρωχος των παιγνίων και το Crownplay Online έχει εντυπωσιάσει τον ίδιο μου. Ο Πέτρος 48 χρόνιας, μιας καιρικής φίλος, είναι παντοδαπός παίκτης και είπε ότι το Crownplay Online είναι το καλύτερο καζίνο που έχει δοκιμάσει τόσο να παίξει παιχνίδια και να στοχεύει στην κέρδη του. Το παίζω από κάτι μερίδια και είμαι πολύ ευχαριστημένος!

Παίξτε στο Crownplay Online Casino, το πρωτότυπο καζίνο που σας προσφέρει ένα μοναδικό παιχνίδι εμπειρία.

Η πλήρης πιστοποίηση και η ασφαλής πλατφόρμα του Crownplay Online Casino σας garantee μια ασφαλή και αξιόπιστη αναπαράσταση.

Η πολυμεταλλική λιστα παιχνιδιών και τα προσφορά-bonus του Crownplay Online Casino το καθιστούν την καλύτερη επιλογή για την κύρια αναζήτηση στο διαδίκτυο στην Ελλάδα.

Design and Develop by Ovatheme